/*
 * Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

package java.lang;

/**
 * {@code Error} 是 {@code Throwable} 的子类，
 * 表示合理的应用程序不应该试图捕获的严重问题。
 * 大多数这样的错误都是异常条件。
 * {@code ThreadDeath} 错误虽然是一个"正常"条件，
 * 但也是 {@code Error} 的子类，因为大多数应用程序不应该试图捕获它。
 * <p>
 * 方法不需要在其 {@code throws} 子句中声明在方法执行期间
 * 可能抛出但未被捕获的 {@code Error} 的任何子类，
 * 因为这些错误是永远不应该发生的异常条件。
 *
 * 也就是说，出于编译时异常检查的目的，
 * {@code Error} 及其子类被视为非受检异常。
 *
 * @author  Frank Yellin
 * @see     java.lang.ThreadDeath
 * @jls 11.2 Compile-Time Checking of Exceptions
 * @since   JDK1.0
 */
public class Error extends Throwable {
    static final long serialVersionUID = 4980196508277280342L;

    /**
     * 构造一个新的错误，以 {@code null} 作为其详细消息。
     * 原因未初始化，可以随后通过调用 {@link #initCause} 来初始化。
     */
    public Error() {
        super();
    }

    /**
     * 构造一个具有指定详细消息的新错误。
     * 原因未初始化，可以随后通过调用 {@link #initCause} 来初始化。
     *
     * @param   message   详细消息。详细消息保存起来，
     *          以便稍后通过 {@link #getMessage()} 方法检索。
     */
    public Error(String message) {
        super(message);
    }

    /**
     * 构造一个具有指定详细消息和原因的新错误。
     * <p>注意，与 {@code cause} 关联的详细消息<i>不会</i>自动合并到
     * 此错误的详细消息中。
     *
     * @param  message 详细消息（保存起来以便稍后通过
     *         {@link #getMessage()} 方法检索）。
     * @param  cause 原因（保存起来以便稍后通过
     *         {@link #getCause()} 方法检索）。（允许使用 {@code null} 值，
     *         表示原因不存在或未知。）
     * @since  1.4
     */
    public Error(String message, Throwable cause) {
        super(message, cause);
    }

    /**
     * 构造一个具有指定原因和详细消息
     * {@code (cause==null ? null : cause.toString())} 的新错误
     * （通常包含 {@code cause} 的类和详细消息）。
     * 此构造方法对于那些只是其他可抛出对象的包装器的错误很有用。
     *
     * @param  cause 原因（保存起来以便稍后通过
     *         {@link #getCause()} 方法检索）。（允许使用 {@code null} 值，
     *         表示原因不存在或未知。）
     * @since  1.4
     */
    public Error(Throwable cause) {
        super(cause);
    }

    /**
     * 构造一个具有指定详细消息、原因、启用或禁用抑制
     * 以及启用或禁用可写堆栈跟踪的新错误。
     *
     * @param  message 详细消息。
     * @param cause 原因。（允许使用 {@code null} 值，
     * 表示原因不存在或未知。）
     * @param enableSuppression 是否启用或禁用抑制
     * @param writableStackTrace 堆栈跟踪是否应该可写
     *
     * @since 1.7
     */
    protected Error(String message, Throwable cause,
                    boolean enableSuppression,
                    boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}
